<?php

/**
 * Class Login{}
 * Responsavel em controlar o login da area administrativa
 */
class Login {

    /**
     * Verifica se usuario e senha estao corretos
     *
     * @return json Ira conter informaçoes do que fazer
     */
    public function loginAdmin() {
        $retorno = array();
        $session = new Sessao();
        $session->limpaValoresSessao();
        $session->setCliete();
        $trataDados = new TrataDados();

        if (isset($_GET['origem_externa']) && $_GET['origem_externa'] == "sim") {
            $_POST['usuario'] = $_GET['usuario'];
            $_POST['senha'] = $_GET['senha'];
        }

        if ($trataDados->pegaDados()) {
            $dados = $trataDados->getDados();

            $sql = 'SELECT
                             usuario.nome,
                             usuario.usuario,
                             usuario.id_usuario,
                             usuario.id_edicao,
                             linguagem.linguagem,
                             linguagem.sigla
                        FROM 
                            cadastros.usuario
                        INNER JOIN 
                            cadastros.linguagem ON linguagem.id_linguagem = usuario.id_linguagem
                        WHERE
                            usuario = :usuario AND 
                            senha = :senha AND 
                            ativo = true;';
            $pdo = Conexao::open('sistema');
            $consulta = $pdo->prepare($sql);
            $consulta->bindParam(':usuario', $dados['usuario'], PDO::PARAM_STR);
            $consulta->bindValue(':senha', md5($dados['senha']), PDO::PARAM_STR);
            $consulta->execute();
            $numeroRegistros = $consulta->rowCount();
            $linha = $consulta->fetch(PDO::FETCH_ASSOC);

            if ($numeroRegistros == 1) {
                $session->setValor('sessao_admin', 'sim');
                $session->setValor('sessao_usuario', $linha['usuario']);
                $session->setValor('sessao_nome', $linha['nome']);
                $session->setValor('sessao_id_usuario', $linha['id_usuario']);
                $session->setValor('sessao_id_edicao', $linha['id_edicao']);
                $session->setValor('sessao_linguagem', $linha['linguagem']);
                $session->setValor('sessao_linguagem_sigla', $linha['sigla']);
                $session->setValor('sessao_ativa', 'sistema_sige_6511');
//                if (!empty($linha['id_edicao'])) {
//                    $camposEdicao = array('edicao');
//                    $criteriosEdicao = array();
//                    $criteriosEdicao[] = array('id_edicao', '=', $linha['id_edicao']);
//                    $edicao = new CadastrosEdicaoExecuta($pdo);
//                    $consultaEdicao = $edicao->listar($camposEdicao, $criteriosEdicao);
//                    $linhaEdicao = $consultaEdicao->fetch(PDO::FETCH_ASSOC);
//                    $session->setValor('sessao_edicao', substr($linhaEdicao['edicao'], 0, 70));
//                }
//                $permissao = new Permissao();
//                $permissao->setIdUsuario($linha['id_usuario']);
//                $permissao->getTodasPermissoesDoUsuario();
                $retorno['login_status'] = 'success';
                $retorno['redirect_url'] = '/welcome/bem_vindo';
            } else {
                $retorno['login_status'] = 'invalid';
            }
            unset($pdo);
        } else {
            $retorno['resultado'] = 'dados_errados';
            $retorno['dados_errados'] = $trataDados->getErro();
        }
        return $retorno;
    }

    /**
     * Destruira a sessao
     *
     * @return json Ira retornar 'Sim' caso tenha dado tudo certo
     */
    public function logoffAdmin() {
        $retorno = array();
        $session = new Sessao();
        $session->limpaSessao();
        $retorno['resultado'] = 'sim';
        return json_encode($retorno);
    }

    /**
     * Verifica se banco esta limpo
     *
     * @return bool
     */
    private function inicializarBanco() {
        try {
            $pdo = Conexao::open('sistema'); // abre conexao com o banco
            $consulta = $pdo->prepare('SELECT COUNT(*) AS numero_registros FROM cadastros.usuario');
            $consulta->execute();
            $linha = $consulta->fetch(PDO::FETCH_ASSOC); // pega resultaqdo da consulta
            $pdo = null; // fecha conexao
            if ($linha['numero_registros'] == 0) {
                return true;
            } else {
                return false;
            }
        } catch (PDOException $e) {
            new Excecao($e);
        }
    }

    public function loginHotel() {
        $retorno = array();

        $usuario = (empty($_POST['usuario'])) ? null : addslashes($_POST['usuario']);
        $senha = (empty($_POST['senha'])) ? null : addslashes($_POST['senha']);
        $retorno = array();
        $trataDados = new TrataDados();

        if ($trataDados->pegaDados()) {
            $dados = $trataDados->getDados();

            try {
                $sql = 'SELECT
                            hotel.id_hotel
                        FROM
                            hospedagem.hotel
                        INNER JOIN
                            cadastros.empresa_participacao ON empresa_participacao.id_empresa_participacao = hotel.id_empresa_participacao
                        INNER JOIN
                            cadastros.edicao ON edicao.id_edicao = empresa_participacao.id_edicao
                        AND
                            edicao.ativo = true
                        WHERE
                            hotel.usuario = :usuario
                        AND
                            hotel.senha	= :senha;';

                $pdo = Conexao::open('sistema'); // abre conexao com o banco de dados
                $consulta = $pdo->prepare($sql);
                $consulta->bindParam(':usuario', $dados['usuario'], PDO::PARAM_STR);
                $consulta->bindParam(':senha', $dados['senha'], PDO::PARAM_STR);
                $consulta->execute();
                $numeroRegistros = $consulta->rowCount(); // retorna o numero de registros da consulta
                $linha = $consulta->fetch(PDO::FETCH_ASSOC); // pega dados da consulta
                $session = new Sessao();

                if ($numeroRegistros == 1) {
                    $session->setValor('sessao_id_hotel', $linha['id_hotel']);
                    $session->setValor('sessao_ativa', 'sistema_hotel_7893');

                    $retorno['resultado'] = 'sim';
                } else {
                    $retorno['resultado'] = 'nao';
                }
                $pdo = null; // fecha conexao
            } catch (PDOException $e) {
                new Excecao($e);
                $retorno['resultado'] = 'erro';
                $retorno['erro'] = 'consulta';
            }
        } else {
            $retorno['resultado'] = 'dados_errados';
            $retorno['dados_errados'] = $trataDados->getErro();
        }
        return json_encode($retorno);
    }

}

?>
